home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Experimental BBS Explossion 3
/
Experimental BBS Explossion III.iso
/
gus
/
sdkdigv8.zip
/
SDKV8N13.TXT
< prev
next >
Wrap
Text File
|
1994-01-16
|
10KB
|
221 lines
Apparently-To: john.smith@gravis.com
GUS Programmer's Digest Sat, 15 Jan 94 3:59 Volume 8: Issue 13
Today's Topics:
Mod to 669 converter
Patches in DOS.
Specific GUS Patch probs
subscribe
Using Gusmod in my sources
Standard Info:
- Meta-info about the GUS can be found at the end of the Digest.
- Before you ask a question, please READ THE FAQ.
----------------------------------------------------------------------
Date: Fri, 14 Jan 1994 16:54:00 -0500
From: brian.mccarthy@canrem.com (Brian Mccarthy)
Subject: Mod to 669 converter
Does anyone have/seen a .MOD to .669 converter?
TTYL
------------------------------
Date: Fri, 14 Jan 1994 12:48:50 +0100
From: appel@stack.urc.tue.nl (Stanley Appel)
Subject: Patches in DOS.
I saw someone complain about how and what with patches. I had/have
the same problem and mailed it to forte (with some other bug/errors found
in the new SDK). They said it was not there design but from gravis and
gravis has to disclose this information. They (gravis) are all requests
on a case-by-case and because there are some rights on the pathes they
won't release all information to the public. Forte adviced me to contact
gravis personally and look if they release the information to me in person.
And I just wanted some dum program what displays me what to do with all
the stupid values like envelope and tremolo etc.
Hope his help.
Stanley:
------------------------------
Date: Fri, 14 Jan 1994 21:21:10 -0600 (CST)
From: Jason William Whiteman <jww9624@tamsun.tamu.edu>
Subject: Specific GUS Patch probs
Forte, Gravis, and Gravis UltraSound Developers:
I would like to point out some problems with the SDK and offer some
possible solutions. All problems were encountered developing a patch file
loader/player targeted for the DOS platform. No outside code to interface
with the GUS was used and none of the SDK's code was modified for the
project.
First, I encountered the problem of how to handle the envelopes
correctly. The concepts seem simple enough, but one can over analyze
what the SDK is saying; in turn, incorrectly implementing patches.
The problem was this: should I interpret the envelope arranged as :
[1]
Envelope_Offset[1] -- Envelope_Rate[1] --> (Env.)Offset[2] ... --> 0 (Offset)
or should I use:
[2]
0 (Offset) -- Envelope_Rate[1] --> Envelope_Offset[1] -- Envelope_Rate[1] ...
After reviewing PATCH.EXE from the 2.01 SDK, the graphical
representation of the envelope confirmed that [2] (starting at a zero
offset, ramping to offset 1 with rate 1, etc. ) was the correct
interpretation.
Suggestion: Tell the developer about these type of assumptions.
If this is indeed how the envelope works it would not be difficult to
point this "quirk" out.
Secondly, I found myself questioning the entire meaning of the
Envelope_Offset variable. At first I thought I could just use the
envelope data to increase the volume of the current voice (patch) by
whatever the Envelope_Offset said at whatever rate Envelope_Rate said.
However, if this method is used, the patch will never fade (decay) to
a zero volume level. Using ACPIANO.PAT as a test patch, I noticed that
apparent zero offsets (displayed with PATCH.EXE's graphical envelope)
were actually set to an offset of "8". After seeing this I made the
assumption that envelopes have some sort of threshold point to mark a
decay (ramp to zero volume level). Here is some pseudo code for the
code made under this assumption (threshold=10):
Base_Volume = Volume_before_envelope; /* Remains constant for all points */
if Last_Ramp is done then begin
/* Ramp starts at current volume or Base_Volume + Last_Envelope_Point */
Ramp_Start_Volume = Base_Volume + Last_Envelope_Point;
if This_Envelope_Point>10 then
Ramp_End_Point = Base_Volume + This_Envelope_Point;
else
Ramp_End_Point = 0; /* Offset is below threshold, marking a decay */
/* to a volume of zero */
The above code was my attempt to get reasonably close to the way every Forte
developed GUS software worked. I do not know if this is correct. In fact,
I am assuming it is wrong and would like to be notified of the correct way
to handle decays.
Suggestion: None provided. Still unsure about it, myself.
Lastly, and most importantly, I found a questionable omission from
the SDK code provided. The problem is with the way the SDK handles
the Voice Start and Voice End within UltraPrimeVoice. Summary: the SDK
cannot pass fractional memory address information to the GF1. Explained:
With the current SDK, there is no way to implement fractional
loop points. This is due to UltraPrimeVoice's handling of addresses
passed to it. First the addresses are converted into a 20-bit address.
Second, this address is converted into both a high and low part and fed
to the GF1. Since the low part is what contains the fractional address
information, I will concentrate on that. The low part is first ANDed
with hex 7F (which zeros the high 9 bytes) then shifts that value to the
left by 9. This shifting left by 9 skips past (zeros) bits 0-4 (5 unused
bits) and bits 5-8 (4 fractional bits).
UltraPrimeVoice's "begin", "start", and "end" address variables
(VBegin, VStart, and VEnd in the Pascal SDK) have very different
functions than the GF1's internal address variables. The UltraPrimeVoice
address variables do not have any bits dedicated to the fractional
address points.
UltraPrimeVoice is the lowest-level code available in the SDK
for setting up patch loop points. UltraPrimeVoice does not support
fractional loop points; therefore, the developer cannot implement
fractional loop points using the current SDK.
Suggestion: Either a) block off 4 bits in UltraPrimeVoice's
"begin", "start", and "end" address variables (Pascal: VBegin, VStart,
VEnd) or b) add another function where the full 32 bits of the
Frequency Control Register are available to the developer.
Note: unless those 5 unused bits are going to be doing anything on the
GF1 that we don't know about, solution (a) seems to be the best route.
Also note: since the Pascal SDK has no source code to the library (TPU),
Pascal users cannot simply modify the SDK. A simple solution for one
to offer for this problem would be: "Sounds like you know how the
Frequency Control Register is mapped out. Why don't you just patch
the SDK yourself?" This is all fine and dandy for "C" programmers.
However, Turbo Pascal programmers do not have source code available to
patch. Furthermore, none of the lower-level routines are available for
them to use in writing their own alternative looping routine. Perhaps
a third suggestion for Pascal SDK developers would be to make ALL
structures and functions available from the outside. This is done by
including ALL procedure prototypes above the "IMPLEMENTATION", as well
as all the "TYPE", "CONST", and global variables.
That's it for now. I would like to see as much advancement as
possible with Gravis UltraSound patch development. I may put my source
code on epas for those waiting for some patch code to be dropped in
their laps. The code is in Pascal. For "C" developers the code may
be useful as pseudo-code for patch implementation.
Jason Whiteman
jww9624@tamsun.tamu.edu
------------------------------
Date: Fri, 14 Jan 94 16:30:36 CST
From: Chevnut@osuunx.ucc.okstate.edu
Subject: subscribe
subscribe
------------------------------
Date: Fri, 14 Jan 94 21:25:27 +0200
From: tjakobs@mswe.dnet.ms.philips.nl (THEO_JAKOBS TEL.62667)
Subject: Using Gusmod in my sources
Hi..
Since a week or two, i'm programming in assembler, and i must say i've
programmed more graphix stuff now then i did in three years in pascal..
But, i want my 'demos' to have some sound, so i thought, why not use
gusmod in my program.
But when i saw the listing, i was a little scared...
What do i need for loading, and playing a mod... I mean which code do i
need from the files...
I also have another question... Will my code be faster if i put the computer
in 386 protected mode... I'm using some 286/386 code..
By the way, to the programmers of motion, the update is still silent on my
GUS...
Well, Happy gussing fellows....
Andre Jakobs
MicroBrain Technologies Inc.
The Netherlands
------------------------------
End of GUS Programmer's Digest V8 #13
*************************************
To post to tomorrow's digest: <gus-sdk@dsd.es.com>
To (un)subscribe or get help: <gus-sdk-request@dsd.es.com>
To contact a human (last resort): <gus-sdk-owner@dsd.es.com>
FTP sites: archive.epas.utoronto.ca /pub/pc/ultrasound
wuarchive.wustl.edu /systems/ibmpc/ultrasound
archive.orst.edu /pub/packages/gravis
theoris.rz.uni-konstanz.de /pub/sound/gus
nctuccca.edu.tw /PC/ultrasound
FTP mail server: mail-server@nike.rz.uni-konstanz.de
Hints:
- Get the FAQ from the FTP sites or the request server.
- Mail to <gus-sdk-request@dsd.es.com> for info about other GUS
related mailing lists (general use, musician's, etc.).